addHook("LinedefExecute", function(line, mo, sector)
	if mo
	//and mo.player
	//and mo.player.playerstate == PST_LIVE
	and mo.valid
		if line.tag
			if not (line.flags & ML_NOCLIMB)
			and not (line.flags & ML_EFFECT4)
			P_LinedefExecute(line.tag, mo)
			elseif (line.flags & ML_NOCLIMB)
				for sector_tag in sectors.iterate
					if sector_tag
					and sector_tag.valid
						if sector_tag.tag == FixedInt(line.frontside.rowoffset)
							if sector_tag.ceilingheight > line.frontside.textureoffset
							P_LinedefExecute(line.tag, mo)
							end
						end
					end
				end
			elseif (line.flags & ML_EFFECT4)
				for sector_tag in sectors.iterate
					if sector_tag
					and sector_tag.valid
						if sector_tag.tag == FixedInt(line.frontside.rowoffset)
							if sector_tag.ceilingheight < line.frontside.textureoffset
							P_LinedefExecute(line.tag, mo)
							end
						end
					end
				end
			end
		end
	end
end, "CEL_COMP")

addHook("LinedefExecute", function(line, mo, sector)
	if mo
	//and mo.player
	//and mo.player.playerstate == PST_LIVE
	and mo.valid
		if line.tag
			if not (line.flags & ML_NOCLIMB)
			and not (line.flags & ML_EFFECT4)
			P_LinedefExecute(line.tag, mo)
			elseif (line.flags & ML_NOCLIMB)
				for sector_tag in sectors.iterate
					if sector_tag
					and sector_tag.valid
						if sector_tag.tag == FixedInt(line.frontside.rowoffset)
							if sector_tag.floorheight > line.frontside.textureoffset
							P_LinedefExecute(line.tag, mo)
							end
						end
					end
				end
			elseif (line.flags & ML_EFFECT4)
				for sector_tag in sectors.iterate
					if sector_tag
					and sector_tag.valid
						if sector_tag.tag == FixedInt(line.frontside.rowoffset)
							if sector_tag.floorheight < line.frontside.textureoffset
							P_LinedefExecute(line.tag, mo)
							end
						end
					end
				end
			end
		end
	end
end, "FLORCOMP")